# -*- coding: utf-8 -*-

#    Copyright (C) 2014 by Promotux
#                       di Francesco Meloni snc - http://www.promotux.it/

#    Author: Francesco Meloni  <francesco@promotux.it>

#    This file is part of OdCollect.

#    OdCollect is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 2 of the License, or
#    (at your option) any later version.

#    OdCollect is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.

#    You should have received a copy of the GNU General Public License
#    along with OdCollect.  If not, see <http://www.gnu.org/licenses/>.


import datetime
from web_lib.page import Page
from web_lib.webutils import leggiInSessione, permalinkaTitle, Response, expose

@expose('/italiaCives/news')
@expose('/italiaCives/news/<page>')
def news_ic(req, subdomain=None, page=None):

    if not leggiInSessione(sezione="Main", chiave="schema"):
        url_red = "/italiaCives"
        return Page(req).redirect(url_red)
    tipo = req.args.get("tipo")
    from dao.NewsCategory import NewsCategory
    from dao.News import News
    tipoo = NewsCategory().select(denominazione_breve=tipo)
    if tipoo and tipo and tipo != "None":
        idtipo=tipoo[0].id
    else:
        idtipo=None
    if tipo and not idtipo:
        news = []
    else:
        numero = News().count(id_categoria=idtipo,batchSize=None)
        batchSize = 4
        if page:
            offset = batchSize*int(page)
            page = int(page)+1
        else:
            offset=0
            page=1
        if (offset+batchSize)>=numero:
            page=0
        news = News().select(id_categoria=idtipo,offset=offset, batchSize=batchSize)
    pageData = {'file' : "ic/newss",
                "newss": news,
                "tipo":tipo,
                "page": page
                }
    return Page(req).render(pageData)

@expose('/italiaCives/news/add')
def edit_news_ic(req, action=None):
    """ Questa funzione prepara il form per l'aggiunta e la modifica DANDO dati"""
    if not leggiInSessione(sezione="Main", chiave="schema"):
        url_red = "/italiaCives"
        return Page(req).redirect(url_red)
    elif leggiInSessione(sezione="Main", chiave="id_oper"):
        id_oper = leggiInSessione(sezione="Main", chiave="id_oper")
        from dao.Operatore import Operatore
        opi = Operatore().getRecord(id=id_oper)
        if opi.active and opi.tipo_operatore=="amministratore":
            from dao.NewsCategory import NewsCategory
            from dao.News import News
            id = req.form.get("id")
            if id and id != "None":
                d = News().getRecord(id=int(id))
            else:
                d = News()
            tipo = req.form.get("tipo")

            if tipo =="eventi":
                fil = "ic/edit_eventi"
                newscategory = NewsCategory().select(denominazione_breve="eventi",batchSize=None)
            else:
                fil = "ic/edit_news"
                newscategory = NewsCategory().select(batchSize=None)
            pageData = {'file': fil,
                        "dao": d,
                        "newscategory": newscategory,
                        "tipo":tipo,
                        }
            return Page(req).render(pageData)
        else:
            pageData = {'file': "ic/modulo_registrazione",
                    "dao":None,
                    "waiting":True
                    }
            return Page(req).render(pageData)
    else:
        pageData = {'file': "ic/modulo_registrazione",
                    "dao":None,
                    "waiting":False
                    }
        return Page(req).render(pageData)

@expose('/italiaCives/news/Create')
def create_news_ic(req, action=None):
    """Questo form invece PRENDE dati dal form """
    if leggiInSessione(sezione="Main", chiave="schema") and leggiInSessione(sezione="Main", chiave="id_oper"):
        id_oper = leggiInSessione(sezione="Main", chiave="id_oper")
        from dao.Operatore import Operatore
        opi = Operatore().getRecord(id=id_oper)
        if opi and opi.active and opi.tipo_operatore =="amministratore":
            from dao.News import News
            id = req.form.get("id")
            if id != "None":
                d = News().getRecord(id=int(id))
            else:
                d = News()
            print "DATI DELLA REQUEST", req.form.to_dict()
            id = req.form.get("id")
            if id != "None":
                d = News().getRecord(id=int(id))
            else:
                d = News()
                d.publication_date = datetime.datetime.now()
            try:
                d.id_categoria = int(req.form.get("id_categoria"))
            except:
                d.id_categoria = None
            d.title = str(req.form.get("title"))
            d.abstract = ""
            #tipo = req.args.get("tipo")
            #if tipo =="eventi":
                #d.body = str(req.form.get("formSubmissionn"))
            #else:
            d.body = str(req.form.get("formSubmission"))
            d.active = bool(req.form.get("active"))
            d.permalink = permalinkaTitle(req.form.get('title'))
            d.persist()
    url_red = "/italiaCives/dashboard"
    return Page(req).redirect(url_red)

#@expose('/italiaCives/news/Edit')
#def edit_news_ic_(req, action=None):
    #if leggiInSessione(sezione="Main", chiave="schema") and leggiInSessione(sezione="Main", chiave="id_oper"):
        #id_oper = leggiInSessione(sezione="Main", chiave="id_oper")
        #from dao.Operatore import Operatore
        #opi = Operatore().getRecord(id=id_oper)
        #if opi and opi.active and opi.tipo_operatore =="amministratore":
            #from dao.NewsCategory import NewsCategory
            #from dao.News import News
            #id = req.form.get("id")
            #if id and id != "None":
                #d = News().getRecord(id=int(id))
            #else:
                #d = News()

            #tipo = req.form.get("tipo")
            #if tipo =="eventi":
                #fil = "ic/edit_eventi"
                #newscategory = NewsCategory().select(denominazione_breve="eventi",batchSize=None)
            #else:
                #fil = "ic/edit_news"
                #newscategory = NewsCategory().select(batchSize=None)
            #pageData = {'file': fil,
                        #"dao": d,
                        #"newscategory": newscategory,
                        #"tipo":tipo
                        #}
            #return Page(req).render(pageData)
    #url_red = "/italiaCives/dashboard#news"
    #return Page(req).redirect(url_red)

@expose('/italiaCives/news/delete')
def delete_news_ic_(req, action=None):
    if leggiInSessione(sezione="Main", chiave="schema") and leggiInSessione(sezione="Main", chiave="id_oper"):
        id_oper = leggiInSessione(sezione="Main", chiave="id_oper")
        from dao.Operatore import Operatore
        opi = Operatore().getRecord(id=id_oper)
        if opi and opi.active and opi.tipo_operatore =="amministratore":
            from dao.News import News
            id = req.args.get("id")
            if id and id != "None":
                d = News().getRecord(id=int(id))
                if d:
                    d.delete()
    url_red = "/italiaCives/dashboard#news"
    return Page(req).redirect(url_red)
